package main

import "fmt"

func main() {
	/*
	万年历
	思路：year:=2018,month:=8
	求出2018年7月31日，距离1900年1月1日的总天数，除以7取余数，就是空格的数量
	星期一星期二星期三星期四星期五星期六星期日
	 */

	//1.给定年份和月份，可以键盘输入：
	year := 2018
	month := 4
	//2.求出2018年7月31日到1900年1月1日的总天数
	sum := 0 //总天数
	//2.1先累加整年的天数
	for i := 1900; i < year; i++ {
		if i%4 == 0 && i%100 != 0 || i%400 == 0 { //判断i是否是闰年
			sum += 366
		} else {
			sum += 365
		}
	}
	//2.2求2018年1月到7月的总天数
	day := 0 //每个月的天数
	for i := 1; i < month; i++ {
		switch i {
		case 1, 3, 5, 7, 8, 10, 12:
			day = 31
		case 4, 6, 9, 11:
			day = 30
		case 2:
			if year%4 == 0 && year%100 != 0 || year%400 == 0 {
				day = 29
			} else {
				day = 28
			}
		}
		sum += day
	}
	//3.计算空格的数量
	kong := sum % 7
	//4.求month月的天数
	day2 :=0//month月的天数
	switch month {
	case 1,3,5,7,8,10,12:
		day2=31
	case 4,6,9,11:
		day2=30
	case 2:
		if year %4==0&&year % 100!=0||year % 400 ==0{
			day2 = 29
		}else {
			day2=28
		}
	}
	//打印
	fmt.Println("星期一\t星期二\t星期三\t星期四\t星期五\t星期六\t星期日")
	//打印空格
	for i:=0;i<kong;i++{
		fmt.Print("\t\t")
	}
	//打印数字
	for i:=1;i<=day2;i++{
		fmt.Print(i,"\t\t")
		//换行
		if (i+kong) % 7 ==0{
			fmt.Println()
		}
	}

}
